home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / sparc / include / asm / irqflags_32.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.0 KB  |  40 lines

  1. /*
  2.  * include/asm/irqflags.h
  3.  *
  4.  * IRQ flags handling
  5.  *
  6.  * This file gets included from lowlevel asm headers too, to provide
  7.  * wrapped versions of the local_irq_*() APIs, based on the
  8.  * raw_local_irq_*() functions from the lowlevel headers.
  9.  */
  10. #ifndef _ASM_IRQFLAGS_H
  11. #define _ASM_IRQFLAGS_H
  12.  
  13. #ifndef __ASSEMBLY__
  14.  
  15. extern void raw_local_irq_restore(unsigned long);
  16. extern unsigned long __raw_local_irq_save(void);
  17. extern void raw_local_irq_enable(void);
  18.  
  19. static inline unsigned long getipl(void)
  20. {
  21.         unsigned long retval;
  22.  
  23.         __asm__ __volatile__("rd        %%psr, %0" : "=r" (retval));
  24.         return retval;
  25. }
  26.  
  27. #define raw_local_save_flags(flags) ((flags) = getipl())
  28. #define raw_local_irq_save(flags)   ((flags) = __raw_local_irq_save())
  29. #define raw_local_irq_disable()     ((void) __raw_local_irq_save())
  30. #define raw_irqs_disabled()         ((getipl() & PSR_PIL) != 0)
  31.  
  32. static inline int raw_irqs_disabled_flags(unsigned long flags)
  33. {
  34.         return ((flags & PSR_PIL) != 0);
  35. }
  36.  
  37. #endif /* (__ASSEMBLY__) */
  38.  
  39. #endif /* !(_ASM_IRQFLAGS_H) */
  40.